Loop Engineering
Loop Engineeringとは
エージェントにプロンプトを送る人間を自分自身から置き換えることである ループとは目的を定義しAIが完了まで反復する再帰的なゴールと捉えられる プロンプティングからループ設計へ
従来は良いプロンプトと十分なコンテキストを書いて1ターンずつ対話していた これからは作業を見つけ・割り振り・チェックし・記録し・次を決める小さなシステムを作り、エージェントを突く役割をそのシステムに任せる
ハーネスがタイマーで動き、小さなヘルパーを生成し、自分自身に入力を与える ツールではなく設計の問題になった
1年前はループを作るなら大量のbashを書いて永久にメンテする必要があった 形が同じと気づけばどのツールかの議論は不要になり、どちらでも動くループを設計すればよい
ループに必要な5つの部品+記憶
モデルは実行間ですべて忘れるため記憶はコンテキストではなくディスク上に置く必要がある 両プロダクトとも現在5つすべてを備える
Automations(ループの心拍)
ループを一度きりの実行ではなく実際のループにするもの
CodexアプリではAutomationsタブでプロジェクト・プロンプト・頻度・実行環境を指定 発見があった実行はTriageインボックスへ、何もない実行は自動でアーカイブ AutomationはSkillを呼べるので巨大な指示文を貼らず$skill-nameで起動できる
/loopでインターバル実行、cronタスク、エージェントライフサイクルでのシェルコマンド発火 セッション内プリミティブ
/loopはカデンスで再実行
/goalは書いた条件が真になるまで継続し、毎ターン後に別の小モデルが完了判定する
コードを書いたエージェントが採点しない構造
Codexにも同名の/goalがあり検証可能な停止条件まで継続 Worktree(並行を混沌にしない)
複数エージェントを動かすとファイル衝突が失敗要因になる
一方のエージェントの編集が他方のチェックアウトに触れられない
Claude Codeはgit worktree・--worktreeフラグ・サブエージェントへのisolation: worktree設定で同じ分離を提供 Skills(毎回プロジェクト説明をやめる)
毎セッション同じプロジェクト文脈を金魚のように再説明するのをやめる手段
両ツールともSKILL.mdを含むフォルダという同じ形式を使う(任意でスクリプト・参照・アセットを含む)
Codexは$や/skillsでの呼び出し、またはタスクが説明に一致すれば自動実行 退屈で的確な説明文が巧妙なものに勝る理由
Skillは外部に書き留めた意図であり、規約・ビルド手順・過去の事故の教訓を一度書けば毎回読まれる
Skillは著作フォーマットでありプラグインは配布手段 複数リポジトリで共有・束ねる場合はプラグインとしてパッケージする
プラグインとコネクタ(実ツールに触れる)
ファイルシステムしか見えないループは小さなループ
プラグインはコネクタとSkillを束ねチームメイトが一括導入できる 「修正案はこれ」と言うだけのエージェントと、PRを開きチケットを紐付けCIがグリーンになったらチャンネルに通知するループの違い
サブエージェント(作る者と確認する者を分ける)
ループで最も有用な構造は書く者とチェックする者を分けること
コードを書いたモデルは自分の宿題を甘く採点しすぎる
異なる指示・時に異なるモデルの第2エージェントが見逃しを捕える
Codexは要求時のみサブエージェントを生成し並行実行して結果を1つに統合 .codex/agents/にTOMLで定義(名前・説明・指示・任意のモデルと推論努力)
典型分担は探索・実装・仕様に対する検証の3つ
ループは見ていない間に動くので、信頼できる検証者だけが立ち去れる理由になる
サブエージェントは各自モデルとツールを使うためトークンを多く消費する
1つのループの形
毎朝automationがリポジトリで実行される
プロンプトがトリアージSkillを呼び前日のCI失敗・オープンissue・最近のコミットを読み、findingをmarkdownやLinearに書く やる価値のあるfindingごとに独立worktreeを開きサブエージェントが修正案を作成
第2サブエージェントがプロジェクトSkillと既存テストに対し案をレビュー
コネクタがPRを開きチケットを更新
ループが扱えないものはトリアージインボックスへ
状態ファイルが全体の背骨で、試したこと・通ったこと・未解決を記憶し翌朝続きから始まる
一度設計しただけで各ステップをプロンプトしていない点が要点
ループがやってくれないこと
ループは仕事を変えるが人間を消さない、3つの問題はループが良くなるほど鋭くなる
無人で動くループは無人でミスを犯すループでもある
「完了」は主張であって証明ではない
理解は放置すれば腐る
ループが速くコードを書くほど、存在するものと自分が把握するものの差が広がる
快適な姿勢が危険
判断を持って設計すれば治療、思考回避のために設計すれば促進剤、同じ行動で逆の結果
結論: ループを作れ、エンジニアであり続けろ
仕事の進化のプレビューだが、自分でコードをレビューせず自動ループに完全依存すれば品質は落ちる
ループを設定しつつ直接プロンプトするのも有効、バランスが重要
同じループでも人によって正反対の結果になる
深く理解した作業で速く動くために使うか、理解を避けるために使うか
ループはその違いを知らない、人間が知っている